package com.sun.designpatternsdemo.factory.bean.jdgc

import android.util.Log

/**
 * 版权：xx公司 版权所有
 * @author sun
 * 版本：1.0
 * 创建日期：2021/6/29 10:32
 * 描述：简单工厂模式
 *
 */
class RoujiamoStore(val factory: SimpleRoujiaMoFactory) {
    fun sellRoujiamo(type: String): Roujiamo {
        return factory.createRoujiaMo(type).apply {
            prepare()
            fire()
            pack()
        }
    }
}

class SimpleRoujiaMoFactory {
    fun createRoujiaMo(type: String): Roujiamo {
        return when (type) {
            "suan" -> ZSuanRoujiaMo()
            "la" -> ZLaRoujiaMo()
            "tian" -> ZTianRoujiaMo()
            else -> ZSuanRoujiaMo()//默认酸味
        }
    }
}

abstract class Roujiamo {
    var name: String? = null

    //准备工作
    fun prepare() {
        Log.e("---RoujiaMo:", "$name: 揉面-剁肉-完成准备工作")
    }

    //秘制设备 -- 烧烤2分钟
    fun fire() {
        Log.e("---RoujiaMo:", "$name: 肉夹馍-专用设备-烘烤")
    }

    //使用们们的专用袋-包装
    fun pack() {
        Log.e("---RoujiaMo:", "$name: 肉夹馍-专用袋-包装---end")
    }
}

class ZLaRoujiaMo : Roujiamo() {
    init {
        this.name = "辣味肉夹馍"
    }
}

class ZSuanRoujiaMo : Roujiamo() {
    init {
        this.name = "酸味肉夹馍"
    }
}


class ZTianRoujiaMo : Roujiamo() {
    init {
        this.name = "甜味肉夹馍"
    }
}
